package com.gosling.gosling.hutool;

import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.IdcardUtil;
import com.gosling.cloudspace.common.exception.CommonException;
import com.gosling.cloudspace.tools.BankCardTool;

import java.util.UUID;

/**
 * @Software: IntelliJ IDEA
 * @Addresses: www.gosling.com
 * @Email 1793327033@qq.com
 * @Classname lhltest
 * @Author: lihonglin
 * @Date: 2021/8/8 17:36
 */
public class HutoolCheckTest {

    public static void main(String[] args) {

    }

    public void huTollsValidatorTest() {
        Assert.isTrue(IdcardUtil.isValidCard("xxx"), CommonException.tryError("身份证格式校验错误"));
        Assert.isTrue(IdcardUtil.isValidCard("xxx"), CommonException.tryError("身份证格式校验错误"));
        Assert.isTrue(BankCardTool.checkBankCard(""), CommonException.tryError("银行卡格式错误"));
        Assert.isTrue(BankCardTool.checkBankCard(""), CommonException.tryError("银行卡格式错误"));
        Assert.isTrue(Validator.isCreditCode("9111010880116C302"), CommonException.tryError("营业执照错误"));
        Assert.isTrue(Validator.isCreditCode("91210100604608172K"), CommonException.tryError("营业执照错误"));
        Assert.isTrue(Validator.isCreditCode("91510100572265397R"), CommonException.tryError("营业执照错误"));
        // null 空 布尔
        Assert.isTrue(Validator.isNull(null));
        Assert.isTrue(Validator.isNotNull("test"));
        Assert.isTrue(Validator.isEmpty(""));
        Assert.isTrue(Validator.isNotEmpty("test"));
        Assert.isTrue(Validator.isTrue(true));
        Assert.isTrue(Validator.isFalse(false));
        // 相等
        Assert.isTrue(Validator.equal("test", "test"));
        // 是否汉字，包含汉字
        Assert.isTrue(Validator.hasChinese("test叨叨软件测试"));
        Assert.isTrue(Validator.isChinese("叨叨软件测试"));
        // 是否为数字
        Assert.isTrue(Validator.isNumber("1.1"));
        // 是否字母，包括大写和小写字母
        Assert.isTrue(Validator.isWord("test"));
        // 是否为英文字母 、数字和下划线， 还支持：大写和小写字母和汉字（isLetter）
        Assert.isTrue(Validator.isGeneral("dao_1"));
        // 是否全为大写或小写字母
        Assert.isTrue(Validator.isLowerCase("test"));
        Assert.isTrue(Validator.isUpperCase("test"));
        // 检查给定的数字是否在指定范围内
        Assert.isTrue(Validator.isBetween(1, 1, 1));
        // 生日
        Assert.isTrue(Validator.isBirthday("20200830"));
        // 18位 身份证号格式校验，已经提 PR，改为调用 IdcardUtil 的方法，估计5.4.1 版本更新
        Assert.isTrue(Validator.isCitizenId("11010119900307299X"));
        // 身份证校验，支持18位、15位和港澳台的10位
        // 支持：10位（isValidCard10），15位（isValidCard15），18位（isValidCard18），香港（isValidHKCard），台湾（isValidTWCard）
        Assert.isTrue(IdcardUtil.isValidCard("11010119900307299X"));
        Assert.isTrue(IdcardUtil.isValidCard18("11010119900307299X"));
        // 统一社会信用代码（营业执照注册号）
        Assert.isTrue(Validator.isCreditCode("91350500676532779B"));
        // 中国车牌号
        Assert.isTrue(Validator.isPlateNumber("京A88888"));
        // 邮编
        Assert.isTrue(Validator.isZipCode("100000"));
        // uuid
        Assert.isTrue(Validator.isUUID(UUID.randomUUID().toString()));
        // 正则表达式
        Assert.isTrue(Validator.isMatchRegex("^d.*t$", "test"));
        // 手机号
        Assert.isTrue(Validator.isMobile("13888888888"));
        // url
        Assert.isTrue(Validator.isUrl("http://www.baidu.com"));
        // email
        Assert.isTrue(Validator.isEmail("dao@test.com"));
        // ip
        Assert.isTrue(Validator.isIpv4("192.168.1.1"));
        Assert.isTrue(Validator.isIpv6("CDCD:910A:2222:5498:8475:1111:3900:2020"));
    }


}
